package model;

import java.util.Observable;

import model.interfaces.State;
import model.state.Gereserveerd;
import model.state.Vrij;

public class Veld extends Observable {

	private Lid gereserveerdDoor;
	private State status;
	private int veldNr;

	public Veld(int veldNr) {
		status = new Vrij();
		this.veldNr = veldNr;
	}

	public void switchStatus() {
		if (status instanceof Vrij) {
			status = new Gereserveerd();
		}
		if (status instanceof Gereserveerd) {
			status = new Vrij();
		}
		setChanged();
		notifyObservers();
	}

	public void reserveer(Lid lid) {
		status.reserveer();
		if (status instanceof Vrij) {
			status = new Gereserveerd();
			setGereserveerdDoor(lid);
			setChanged();
			notifyObservers();
		}
	}

	public void maakVrij() {
		if (status instanceof Gereserveerd) {
			status = new Vrij();
			gereserveerdDoor = null;
			setChanged();
			notifyObservers();
		}
	}

	public int getVeldNr() {
		return veldNr;
	}

	public Lid getGereserveerdDoor() {
		return gereserveerdDoor;
	}

	public void setGereserveerdDoor(Lid gereserveerdDoor) {
		this.gereserveerdDoor = gereserveerdDoor;
	}
	
	public String getStatus(){
		return status.getStatus();
	}
	
	public String toString(){
		return "Veld " + veldNr + " | Status: " + status.getStatus(); 
	}

}
